package com.yeren.collection.collection;

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

/**
 * 使用迭代器遍历集合
 * @author Administrator
 *
 */
public class CollectionDemo8 {
	public static void main(String[] args) {
		Collection c=new ArrayList();
		c.add("one");
		c.add("***");
		c.add("two");
		c.add("***");
		c.add("three");
		c.add("***");
		c.add("four");
		
		//java.util.Iterator
		/*
		 * 1.迭代器用于遍历集合元素。获取迭代器可以使用Collection定义的方法：
		 *   -Iterator iterator()
		 * 2.迭代器Iterator是一个接口，集合在重写Collection的
		 * iterator()方法时利用内部类提供了迭代器的实现。
		 * 3.Iterator提供了统一的遍历集合元素的方式，其提供了用于遍历集合的两种方法：
		 * 		-boolean hasNext():判断集合是否还有元素可以遍历。
		 * 	    -E next():返回迭代的下一个元素。
		 * 使用迭代器遍历集合的步奏
		 * 必须遵循：
		 * 问取删     其中删除操作不是必须的
		 * 
		 */
		Iterator it= c.iterator();
		while(it.hasNext()){
			Object o=it.next();
			String str=(String)o;
			if("***".equals(str)){
				/*
				 * 1.在迭代遍历过程中不能通过集合的remove删除元素，否则会抛出并发更改异常。
				 * 我们可以通过迭代器提供的方法，删除刚刚next()迭代出来的元素。
				 * 		-void remove()
				 * 2.迭代器的删除方法是在原集合中删除元素。
				 * 3.这里需要注意的是，在调用remove方法前必须通过迭代器的next()方法
				 * 迭代过元素，那么删除的就是这个元素。
				 *   并且不能再次调用remove方法，除非再次调用next()后方可再次调用。
				 */
//				c.remove(str);
				it.remove();
			}
			System.out.println(str);
			//one
			//***
			//two
			//***
			//three
			//***
			//four
		}
		System.out.println(c);//[one, two, three, four]
	}
}
